今天先來講 Shell 或是 ShellScript 的基本。
本來沒又打算要寫這篇,可是總是會有人問我「為什麼要跳脫」,甚至聽到朋友在抱怨學校教授再問「為什麼要跳脫」,因此我決定花一個篇幅來寫寫,為什麼要跳脫!!誰再問為什麼要跳脫,我一定拿這篇文砸下去(怒)。
有在打指令應該都知道指令中間插入「空白」會讓後面的應用程式決的這是兩個參數(arg),像是身為開發者常常用到的 git push origin new-master
, git
會知道他被呼叫了,傳入三個參數分別是 push
、 origin
與 new-master
,這個範例什麼問題。
但是如果今天有個檔案叫做 My Document.txt
而我要刪除他呢?如果直接下 rm My Document.txt
, rm
就會知道他被執行,參數一是 My
、參數二是 Document.txt
,於是 rm
開始找 My
,準備把 My
刪掉……恩找不到檔案;接著處理參數二的 Document.txt
,一樣找不到,所以最後噴兩個錯誤表示檔案找不到無法刪掉。
等等這不對,我們要刪除的檔案叫做 My Document.txt
,怎麼變成我要刪除兩個檔案了!對,因為「空白」有特殊功能(分隔不同參數),而現在我們不要這些特殊功能,所以這時候就要跳脫讓這些「空白」就只是個空白,而不是拿來切割參數的特殊字元。
在 Unix Like 的 Shell 下,有以下幾種跳脫方式:
\
""
把字串包起來''
把字串包起來這次我們要刪除 My Document.txt
,用上面三種方法都可以,也就是以下三種指令都可以正常把這個「有空白」的檔案刪掉:
rm My\ Document.txt
rm "My Document.txt"
rm 'My Document.txt'
至於雙引號 ""
與單引號 ''
的差異,會有機會寫到的!今天就講這個為什麼要「跳脫」與 Shell 裡面跳脫的用法……蛤,那個誰又來問我問我跳脫了?!
我是誰?
我是 dd-han ,可以叫我呆翰。是國立臺中科技大學的延畢生 與 創科資訊的時習生。